/*Demo:
 *验证两个汉字以上写法:show(id,value.isTwoChinese())
 *或者为空,不为空则必须两个汉字以上写法:show(id,value.isNull()||value.isTwoChinese())
 *文本域长度限制写法:maxTxt(id,'150')
 *可为空文本写法:showPss(id)*/
var isValid = true,
	parseStringLevel = null;
String.prototype.regex = function(regexString) {
	return regexString.test(this);
}
String.prototype.isOk = function() {
	return true;
}
String.prototype.isPass = function(flag) {
	return this == "" ? true : flag;
}
//是否为空或者全部都是空格
String.prototype.isNull = function() {
	return this.regex(/^\s*$/);
}
//是否为空或者全部都是空格
String.prototype.isNotNull = function() {
	return !this.isNull();
}
//是否为空####
String.prototype.isIndex0 = function() {
	return this == "###" ? false : true;
}
//是否为IP
String.prototype.isIP = function() {
	return this.regex(/^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$/);
}
//是否为邮箱
String.prototype.isEmail = function() {
	return this.regex(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/);
}
//是否符合整数格式
String.prototype.isInteger = function() {
	return this.regex(/^[-]?\d+$/);
}
//是否为正整数
String.prototype.isNumber = function() {
	return this.regex(/^\d+$/);
}
//视力验证
String.prototype.isVision = function() {
	return this.regex(/^[1-5].\d$/);
}
//是否是带小数的数字格式,可以是负数
String.prototype.isDecimal = function() {
	return this.regex(/^[-]?\d+(.\d+)?$/);
}
//是否符合金额格式(格式定义为带小数的正数，小数点后最多2位 )
String.prototype.isMoney = function() {
	return this.regex(/^\d{1,8}(,\d{3})*(\.\d{1,2})?$/);
}
//是否符合手机号格式
String.prototype.isMobile = function() {
	return this.regex(/^1(3|4|5|7|8)\d{9}$/);
}
//是否为端口格式
String.prototype.isPort = function() {
	return (this.isNumber() && this < 65536);
}
//是否只由英文字母和数字和下划线组成
String.prototype.isNumberOr_Letter = function() {
	return this.regex(/^[0-9a-zA-Z\_]+$/);
}
//是否只由英文字母和数字组成
String.prototype.isNumberOrLetter = function() {
	return this.regex(/^[0-9a-zA-Z]+$/);
}
//是否只由汉字、字母、数字组成下划线
String.prototype.isChinaOrNumbOrLett = function() {
	return this.regex(/^[0-9a-zA-Z\_\-\u4e00-\u9fa5]+$/);
}
//是否只由汉字、字母组成
String.prototype.isChinaOrLett = function() {
	return this.regex(/^[a-zA-Z\u4e00-\u9fa5]+$/);
}
//是否电话号码格式
String.prototype.isPhone = function() {
	return this.regex(/^((0\d{2,3}-)?\d{7,8}(-\d{1,4})?|(400|800)\d{7})$/);
}
//是否传真号码格式
String.prototype.isFax = function() {
	return this.regex(/^(86\-)?(\d{2,4}-)?([2-9]\d{6,7})+(-\d{1,4})?$/);
}
//是否电话号码或手机格式
String.prototype.isPhoneOrMobile = function() {
	return (this.isPhone() || this.isMobile());
}
//是否存在两个以上汉字
String.prototype.isTwoChinese = function() {
	return this.regex(/[\u4e00-\u9fa5]+.*[\u4e00-\u9fa5]/);
}
//是否为网址格式
String.prototype.isWebUrl = function() {
	return this.regex(/^(http|https|ftp):\/\/([\w-]+\.)+[\w-]+([\/\:][\w- .\/?%&=\;#\*\+]*)?$/);
}
//是否为身份证格式|身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X。
String.prototype.isPID = function() {
	return this.regex(/(^\d{15}$)|(^\d{17}([0-9]|X|x)$)/);
}
//是否为银行卡号|银行卡号为16位或者19位
String.prototype.isBankcard = function() {
	return this.regex(/(^\d{16}$)|(^\d{19}$)/);
}
//是否为区号个格式
String.prototype.isCode = function() {
	return this.regex(/^0\d{2,3}$/);
}
//是否为有效天数
String.prototype.isOverDay = function() {
	return this.regex(/^(3[0-5]\d|36[0-5]|[0-2]?\d\d?)$/);
}
//是否有包含特殊字符
String.prototype.isSpChar = function() {
	return !this.regex(/(<|>)/);
}
String.prototype.isScript = function() {
	return this.regex(/(<[\/]?script.*>)/i);
}
//是否为邮政编码格式
String.prototype.isZip = function() {
	return this.regex(/^\d{6}$/);
}
//是否为网址格式
String.prototype.isUrl = function() {
	return this.regex(/^([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?$/);
}
//QQ,MSN,ICQ选择验证
function QMIVaildata(str, id, strValue) {
	switch (ID$(str).value) {
		case "3":
			show(id, strValue.isNull() || strValue.isQQ());
			break;
		case "2":
			show(id, strValue.isNull() || strValue.isMSN());
			break;
		case "1":
			show(id, strValue.isNull() || strValue.isICQ());
			break;
		default:
			show(id, false);
			break;
	}
}
//是否为QQ格式
String.prototype.isQQ = function() {
	return this.regex(/^[1-9]\d{4,11}$/);
}
//是否为MSN格式
String.prototype.isMSN = function() {
	return this.isEmail();
}
//是否为ICQ格式
String.prototype.isICQ = function() {
	return this.isQQ();
}
//是否为日期格式
String.prototype.isDate = function() {
	return this.regex(/^\d{1,4}(-|\/|\.|年)(0?[1-9]|1[0-2])(-|\/|\.|月)(0?[1-9]|[12]\d|3[01])(日)?$/);
}
//去空格  返回值:去空后的字符串 trim跟默认冲突 删除
//删除左边的空格
String.prototype.ltrim = function(c) {
	return this.replace(eval('/(^{0}*)/g'.replace(/\{0\}/g, !c ? '\\s' : (c.isChinaOrNumbOrLett() ? c : '\\' + c))), "");
}
//删除右边的空格
String.prototype.rtrim = function(c) {
	return this.replace(eval('/({0}*$)/g'.replace(/\{0\}/g, !c ? '\\s' : (c.isChinaOrNumbOrLett() ? c : '\\' + c))), "");
}
String.prototype.trimCommo = function() {
	return this.replace(/(^\,*)|(\,*$)/g, "");
}
//大于０的整数
String.prototype.isPinFang = function() {
	return this.regex(/^[1-9]\d*$/);
}
//正整数，有限长度
String.prototype.positive_integer = function(length) {
	return this.regex(eval('/^[1-9]\\d{0,{0}}$/'.replace(/\{0\}/g, length > 0 ? length - 1 : 0)));
}
//是否是正确的图片格式
String.prototype.isImage = function() {
	return this.toLowerCase().regex(/\.(jpg|gif|png|bmp|jpge)$/);
}
//是否是正确的flash格式
String.prototype.isFlash = function() {
	return this.toLowerCase().regex(/\.(fla|swf)$/);
}
//必须输入数字字符并且遇到非数字即可自动清除非数字
function inputCheckNumber(id, value) {
	if (!value.regex(/^[1-9]\d*$/)) ID$(id).value = value.replace(/\D/, "");
}
//是否只由英文字母和数字和-组成
String.prototype.isNumberLetter = function() {
	return this.regex(/^[0-9a-z\-]+$/);
}
//字符串转化为时间
String.prototype.toDate = function(date) {
	return new Date(date.replace(/-/g, "/"));
}
/*时间格式化*/
String.prototype.toDate = function() {
	return new Date(this.replace(RegExp("-", "g"), "/"));
}
/* 用途：判断是否是日期 返回：如果通过验证返回true,否则返回false */
String.prototype.isEffectiveDate = function() {
	return this.regex(
		/^((((19|20)\d{2})(0?[13-9]|1[0-2])(0?[1-9]|[12]\d|30))|(((19|20)\d{2})(0?[13578]|1[02])31)|(((19|20)\d{2})0?2(0?[1-9]|1\d|2[0-8]))|(((19|20)(0[48]|[2468][048]|[13579][26])|(2000))0?229))$/
	);
}
//特殊字符转化
String.prototype.replaceSpecial = function() {
	return this.replace(/\\/g, "＼").replace(/\//g, "／").replace(/\"/g, "“").replace(/\'/g, "＇").replace(/</g, "＜").replace(
		/>/g, "＞").replace(/&/g, "＆").replace(/}/g, "｝").replace(/{/g, "｛");
}
//是否为背景音乐格式
String.prototype.isMusic = function() {
	return this.regex(/^(http|https|ftp):\/\/([\w-]+\.)+[0-9a-zA-Z:]+(\/[\w- .\/-?%&=]*)?(\/\w+)?\w+(\.mp3|\.wma)$/i);
}
/*返回数字*/
String.prototype.toInt = function() {
	var number = this.replace(RegExp("[^0-9]", "g"), "");
	return isNaN(parseInt(parseFloat(number))) ? 0 : parseInt(parseFloat(number));
}
/*字符床格式化*/
String.prototype.format = function(args) {
	if (arguments.length == 0) return this;
	var str = this;
	if (arguments.length == 1 && typeof(args) == "object") {
		for (var key in args) {
			str = str.replace(new RegExp('/\\{' + key + '\\}', 'gm'), args[key]);
		}
	} else {
		for (var i = 0; i < arguments.length; i++) {
			if (arguments[i] == undefined) return "";
			str = str.replace(new RegExp("\\{" + i + "\\}", "gm"), arguments[i]);
		}
	}
	return str;
}
/*时间格式化*/
Date.prototype.format = function(format) {
	var o = {
		"M+": this.getMonth() + 1,
		"d+": this.getDate(),
		"H+": this.getHours(),
		"m+": this.getMinutes(),
		"s+": this.getSeconds(),
		"q+": Math.floor((this.getMonth() + 3) / 3),
		"S": this.getMilliseconds()
	}
	if (/(y+)/.test(format)) {
		format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
	}
	for (var k in o) {
		if (new RegExp("(" + k + ")").test(format)) {
			format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
		}
	}
	return format;
}
/*时间格式化*/
Date.prototype.toDate = function() {
	return this;
}
//设置正常时间
var set_date = function(date) {
	return date.format('yyyy-MM-dd HH:mm:ss');
}
//设置短日期
var set_date_short = function(date) {
	return date.format('yyyy-MM-dd');
}

/*检测是否为时间*/
function isDate(date) {
	date = date == undefined ? "" : date.toString().toDate();
	return new Date(date) != "Invalid Date" && new Date(date) != "NaN";
}
//验证方法
var fun_validate = function(error, msg) {
	if (error) {
		uni.showToast({
			title: msg,
			icon: 'none'
		});
	}
	return error;
}
//添加到方法中
module.exports = {
	fun_validate: fun_validate
}
